The present invention relates to storage systems, and more specifically, this invention relates to partitioning access paths for shared storage services.
Distributed software-defined storage systems built on commodity hardware are quickly becoming the preferred choice for building large-scale storage services. Many of these systems are designed with the primary objectives of scalability and low cost. Object storage systems, such as OpenStack Swift, are designed as a set of loosely coupled micro services. Each micro service may be tasked with a specialized function, and designed for deployment on any physical topology. Scalability and fault tolerance is achieved by deploying multiple instances of each of the micro services, also known as horizontal scaling.
Typically, cloud storage providers configure and deploy all instances of a given micro service type identically, and load balancers are deployed in front of these instances to distribute the workloads. For instance, a Swift deployment may include tens of proxy services, each configured/deployed identically, with a round robin load balancer in front to distribute the workloads. In a shared storage cloud built using this model, all workloads may be treated equally with regard to the services they traverse. Tuning the configuration/resource allocation of the micro services to be optimized for all the different types of incoming workloads is difficult, if not impossible. Therefore, a one-size-fits-all approach is typically employed.